@南馆潇湘
1年前 提问
2个回答

如何避免 NoSQL 注入

Andrew
1年前
官方采纳

为了避免NoSQL注入,您必须始终将用户输入视为不受信任。您可以执行以下操作来验证用户输入:

  • 使用mongoose等数据库。

  • 如果找不到适合您环境的库,请将用户输入转换为期望的类型。例如,将用户名和密码转换为字符串。

  • 在MongoDB的情况下,切勿在用户输入中使用where,mapReduce或group运算符,因为这些运算符使攻击者能够注入JavaScript,因此比其他运算符更加危险。为了加强安全性,设置javascriptEnabled到false在mongod.conf如果可能的话。

  • 此外,请始终使用最小特权模型:以尽可能低的特权运行您的应用程序,以便即使被利用,攻击者也无法访问其他资源。

在下炳尚
1年前

1,只需要控制输入,禁止使用危险的操作就可以基本避免NoSQL注入。通过参数过滤就可以避免。

2,对于JavaScript注入,$where 和Commend方法能不用就尽量不要用了,如果必须用的话一定要限制输入或者把要执行的内容写成JavaScript function通过参数的方式传进去。

3,不要打开一些MongoDB相关的REST API,防止跨站请求伪造,给应用最小权限,不要存在未授权访问用户